//
//  HRMainViewController.swift
//  新浪微博
//
//  Created by 王之皆 on 16/12/25.
//  Copyright © 2016年 北京海狸先生网络科技有限公司. All rights reserved.
//

import UIKit

/// 住控制器
class HRMainViewController: UITabBarController {


    lazy var  composeButton:UIButton = UIButton(frame:CGRect(x: 0, y: 0, width: 50, height: 50), imageName: "cion_add_nor", backImageName: "hr_4icon010")
    
    override func viewDidLoad() {
        super.viewDidLoad()
      setupChildControllers()
      setupCompostButton()
        view.backgroundColor = UIColor.blue
    }
    
   
    
    /*
     portrait  竖屏 肖像
     - 使用代码控制设备的方向，好处，可以在需要的时候，单独处理
     －设置支持的方向之后，当前的控制器及子控制器都会遵循这个方向
     － 如果播放视频，通常是通过 modal 展现
     */
    
    // swift 3.0  报错 还没找到最新的
    
//    override func  supportedInterfaceOrientations() ->UIInterfaceOrientationMask{
//       
//        return .portrait
//        
//    }

    
    
    
    
    //MARK:--监听方法
    // 撰写按钮
    //
   func composeStatus() {
         print("撰写按钮")
    }

}
//extension 类似于 oc 中的分类，在 swift中还可以用来切分代码块
//可以把相近功能的函数，放在一个 extension 中
//便于代码维护
//注意：和oc 的分类一样 extension 中不能定义属性 只能定义方法
//mark-设置界面
extension HRMainViewController{
    
    func setupCompostButton() {
    tabBar.addSubview(composeButton)
    //计算 按钮的宽度
    let count = CGFloat(childViewControllers.count)
    let width = tabBar.bounds.width / count - 1
    //往里缩进
    //oc 对应的方法是 CGRectInset
    composeButton.frame = tabBar.bounds.insetBy(dx: 2 * width, dy: 0)
        composeButton.addTarget(self, action: #selector(composeStatus), for: .touchUpInside)
    
    }
    
     func setupChildControllers(){
    
        let array = [
            ["clsName" : "HRHomeViewController","title": "首页","imageName": "list_icon_"],
            ["clsName" : "HRMessageViewController","title": "消息","imageName": "message_"],
            ["clsName":"UIViewController"],
            ["clsName" : "HRDiscoverViewController","title": "发现","imageName": "cion_"],
            ["clsName" : "HRProfileViewController","title": "我的","imageName": "toolbar_"],
        ]
        
        var arayM = [UIViewController]()
        
        for dict in array{
            arayM.append(controller(dict: dict))
        }
        
        viewControllers = arayM;
    }
    // 使用字典创建一个字控制器
    // parameter dict: 信息字典[className, title, imageName]
    // － return： 字控制器
    private func controller(dict:[String: String]) -> UIViewController{
        guard  let clsName = dict["clsName"],
         let title = dict["title"],
         let imageName = dict["imageName"],
        // 1> 将 clsName 转换成 cls
         let cls = NSClassFromString(Bundle.main.namespace + "." + clsName) as? UIViewController.Type
        else {
            return UIViewController()
        }
        //2. 创建视图控制器
        let vc = cls.init()
        vc.title = title
        vc.tabBarItem.image =  UIImage(named: imageName + "default")
        vc.tabBarItem.selectedImage = UIImage(named: imageName + "select")?.withRenderingMode(.alwaysOriginal)//渲染
        
        //设置 tabbar 的标题字体 (大小)
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.orange],
        for: .highlighted)
        //(大小)设置 normal 的字体 设置高亮没效果
        vc.tabBarItem.setTitleTextAttributes([NSFontAttributeName:UIFont.systemFont(ofSize: 13)],
        for: .normal)
        
       // vc.tabBarItem.selectedImage = UIImage(named: imageName + "select")
        //实例化导航控制器的时候，会调用 push 方法 将 rootVC 压栈
        let nav = HRNavigationController(rootViewController: vc)
        return nav
   }

}
























